package cl.easyRestaurant.controllers.pedidos;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.servlet.http.HttpServletRequest;

import cl.easyRestaurant.business.pedidos.IClientesBusiness;
import cl.easyRestaurant.business.pedidos.IPedidosBusiness;
import cl.easyRestaurant.models.pedidos.ClienteModel;
import cl.easyRestaurant.models.pedidos.PedidoModel;
import cl.easyRestaurant.models.pedidos.DetallePedidoModel;

public class CancelarPedidosController {
			
	@EJB
	private IClientesBusiness clientesBusiness;
	
	@EJB
	private IPedidosBusiness pedidosBusiness;
	
	private PedidoModel pedidoModel;
	
	private ClienteModel clienteModel;
	
	private DataModel<PedidoModel> pedidosCliente;
	
	private DataModel<DetallePedidoModel> detallePedidoCliente;
	
	@PostConstruct
	public void init() {
		
		HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
		
		String idCliente = request.getParameter("IdCliente");
		
		try {
			this.setClienteModel(this.clientesBusiness.GetClienteModel(idCliente));
			
			this.setPedidosCliente(this.pedidosBusiness.GetPedidosCancelablesCliente(idCliente));
		}
		catch(Exception e) {
			this.setClienteModel(new ClienteModel());
		}
		
	}
	
	public String cancelarPedidoClienteAction() {
		
		HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
		
		String idPedido = request.getParameter("IdPedido");
		
		String idCliente = request.getParameter("IdCliente");
		
		try {
			this.setClienteModel(this.clientesBusiness.GetClienteModel(idCliente));
			
			this.setPedidoModel(this.pedidosBusiness.GetPedidoModel(Integer.parseInt(idPedido)));
			
			this.pedidosBusiness.CancelarPedidoCliente(this.getPedidoModel().getIdPedido());
			
			return "CancelacionClienteExitosa.jsp";
		}
		catch(Exception e) {
			return "CancelacionClienteNoExitosa.jsp";
		}
		
	}
	
	public String verDetallePedidoCancelacionClienteAction() {
		
		try {
			this.setPedidoModel(this.pedidosCliente.getRowData());
			
			this.setDetallePedidoCliente(this.pedidosBusiness.GetDetallePedido(this.getPedidoModel().getIdPedido()));
		}
		catch(Exception e) {
			this.setPedidoModel(new PedidoModel());
			
			this.setDetallePedidoCliente(new ListDataModel<DetallePedidoModel>());
		}
		
		return "CancelarPedidoCliente.jsp";
	
	}
	
	public DataModel<PedidoModel> getPedidosCliente() {
		
		return this.pedidosCliente;
		
	}

	public void setPedidoModel(PedidoModel pedidoModel) {
		
		this.pedidoModel = pedidoModel;
		
	}

	public PedidoModel getPedidoModel() {
		
		return pedidoModel;
		
	}

	public ClienteModel getClienteModel() {
		
		return clienteModel;
		
	}

	public void setClienteModel(ClienteModel clienteModel) {
		
		this.clienteModel = clienteModel;
		
	}

	public void setPedidosCliente(DataModel<PedidoModel> pedidosCliente) {
		
		this.pedidosCliente = pedidosCliente;
		
	}

	public DataModel<DetallePedidoModel> getDetallePedidoCliente() {
		
		return detallePedidoCliente;
		
	}

	public void setDetallePedidoCliente(DataModel<DetallePedidoModel> detallePedidoCliente) {
		
		this.detallePedidoCliente = detallePedidoCliente;
		
	}

}